[ワークショップ] AWS上での継続的インテグレーションとデリバリー #DOP310 #reinvent
アノテーション テクニカルサポートの川崎です。
本記事は AWS re:Invent 2022 のセッションレポートとなります。
「CI/CD on AWS ワークショップ」のコンテンツが 日本語化されていましたので、早速トライしてみました!
概要
このワークショップでは、AWS上でInfrastructure as Codeを使用してエンドツーエンドのCI/CDパイプラインを作成する方法について学びます。継続的インテグレーション、継続的デプロイ、継続的デリバリーの基本的な概念を復習します。その後、TypeScriptを使用してWebアプリケーションを作成し、Dockerを使用してコンテナイメージを構築します。作成したアプリケーションと同じ言語を使用して、AWS Cloud Development Kit (CDK)を使用して、テスト環境と本番環境の両方でCI/CDパイプラインのコードとアプリケーションインフラを構築します。ビルドの準備をしましょう!参加にはラップトップが必要です。
セッション資料
Continuous integration and delivery on AWS
セッション情報
ワークショップ
ワークショップ(日本語版)の URL はこちらになります。
本ワークショップでは、素晴らしいことに、 各モジュールの先頭に、「早送り」のコマンドが用意されていました!
ワークショップのラボは順番に行われるもので、各ラボは前のラボに基づいて構築されています。以下を行うと、Cloud9 から実行する場合にワークショップのこの時点まで早送りできます。次のコマンドをコピーして、Cloud9 のターミナルウィンドウに貼り付け、ワークショップのこの時点までの全てのコマンドのスクリプトをダウンロードして実行します。
そこで、本ブログでは、Lab1 〜 Lab4 をスキップし、Lab5、Lab6 を実施してみます。
イントロダクション
本ワークショップは、盛りだくさんの内容で、下記のようなプラクティスを使用します。 各項目のトピックは、リンク先をご覧ください。
- Docker コンテナを使ったウェブアプリケーションの開発
- ソースコードの変更を管理するためのソース管理サービスのセットアップ
- 継続的インテグレーションによるビルドとテストの自動化
- 継続的デプロイによるテスト環境への自動デプロイ
- 継続的デリバリーによる本番環境へのデプロイの承認
- Infrastructure as Code により全てのステップをコードで定義する
Lab6では、「Blue/Green デプロイ」についても取り上げます。
- [Lab 6: Blue/Green デプロイ]
- [Lab 6: Blue/Green デプロイ]-[Blue/Green デプロイ]
- [Lab 6: Blue/Green デプロイ]-[Blue/Green デプロイ用の CodeDeploy のセットアップ]
その他のトピックについても、リンク先をご覧ください。
- CI/CD 入門
- AWS Cloud Development Kit (CDK)
- マイクロサービス
- Amazon ECS
- Amazon ECR
環境設定
Lab を実施する前に、下記の内容を実行します。
- 自分の AWS アカウントを設定する (ご自身でワークショップを実行する場合)
本ブログでは「AWS 主催のワークショップイベントに参加していない場合」「ご自身でワークショップを実行する場合」 の内容についてお伝えしていきます。
リンク先の手順に従い、Cloud9 のインスタンスにアタッチされている EBS ボリュームのサイズを増やします。
(スキップする)Lab1 〜 Lab4 の内容は以下の通りです。
Lab 1: アプリケーション開発
アプリケーションの作成
アプリケーションコンテナイメージのビルド
Lab 2: ソース管理
ローカル Git リポジトリの作成
AWS CDK を使用した AWS CodeCommit リポジトリの作成
AWS CodeCommit にソースコードをプッシュする
CodeCommit でプルリクエストを作成および管理する
Lab 3: 継続的インテグレーション
AWS CodeBuild によるビルドとテスト
テストレポート
Amazon Elastic Container Registry (ECR)
Docker コンテナをビルドして Amazon ECR にプッシュする
Lab 4: 継続的デプロイ
テスト環境の作成
Amazon ECS への継続的デプロイ
それでは、Lab5 から開始していきます。
Lab 5: 継続的デリバリー
本番環境の作成
本番環境を定義する
bin/app-cdk.ts を開き、 前のラボで定義したインフラストラクチャのコードを再利用します。 本番インスタンスを作成します。
本番スタックをデプロイする
継続的デリバリービルド
アプリケーションのパイプラインスタックの初期化を更新する
パイプラインスタックをデプロイする
変更をチェックインする
AWS CodePipeline コンソールで変更を確認する
デプロイを手動で承認する
Lab 6: Blue/Green デプロイ
本番環境と CodePipeline の更新
パイプラインスタックを更新する
アプリケーションのパイプラインスタックの初期化を更新する
パイプラインスタックをデプロイする
本番アプリケーションスタックを更新する
本番スタックをデプロイする
Blue/Green デプロイ用の CodeDeploy のセットアップ
CodeDeploy アプリケーションとデプロイグループを作成する
アプリケーションのパイプラインスタックの初期化を更新する
パイプラインスタックをデプロイする
taskdef.json と appspec.yaml ファイルを追加する
Blue/Green デプロイを開始するようにアプリケーションコードを変更する
変更をチェックインする
AWS CodePipeline コンソールで変更を確認する
本番デプロイは、Lab 5 で行なった手動ステップの承認後に開始されます。
本番環境の変更を確認する
所感
ワークショップの「早送り」のコマンドは、目からウロコでした。
おかげで、継続的デリバリーと、Blue/Green デプロイの箇所だけ、 ハンズオンを実施することができました。
この仕組みは、ワークショップの受講者にとってメリットが大きいので、 他のワークショップにも広げていただけると、ありがたいです。